<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta http-equiv="Content-Language" content="zh-CN"><title>systemd.time
  中文手册 [金步国]</title><style>
@font-face { font-family: "JinBuGuoWebMono"; src: url("http://www.jinbuguo.com/d/mono.ttf") format("truetype"); }
* { font-family: "JinBuGuoWebMono", "Ubuntu Mono", "Consolas", "Menlo", monospace; }
body { margin:10px; }
h1 { text-align:center; background:#ddd; }
h2#auth_name { text-align:center; margin: 10px 5%; }

    a.headerlink {
      color: #c60f0f;
      font-size: 0.8em;
      padding: 0 4px 0 4px;
      text-decoration: none;
      visibility: hidden;
    }

    a.headerlink:hover {
      background-color: #c60f0f;
      color: white;
    }

    h1:hover > a.headerlink, h2:hover > a.headerlink, h3:hover > a.headerlink, dt:hover > a.headerlink {
      visibility: visible;
    }
</style><script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?d286c55b63a3c54a1e43d10d4c203e75"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><h1>systemd.time 中文手册</h1><h2 id="auth_name">译者：<strong><a href="../index.html">金步国</a></strong></h2><hr><h3>版权声明</h3><p>本文译者是一位开源理念的坚定支持者，所以本文虽然不是软件，但是遵照开源的精神发布。</p><ul><li>无担保：本文译者不保证译文内容准确无误，亦不承担任何由于使用此文档所导致的损失。</li><li>自由使用：任何人都可以自由的<u>阅读/链接/打印</u>此文档，无需任何附加条件。</li><li>名誉权：任何人都可以自由的<u>转载/引用/再创作</u>此文档，但必须保留译者署名并注明出处。</li></ul><h3>其他作品</h3><p>本文译者十分愿意与他人分享劳动成果，如果你对我的其他翻译作品或者技术文章有兴趣，可以在如下位置查看现有的作品集：</p><ul><li><a href="../index.html">金步国作品集</a> [ <a href="../index.html">http://www.jinbuguo.com/</a> ]</li></ul><h3>联系方式</h3><p>由于译者水平有限，因此不能保证译文内容准确无误。如果你发现了译文中的错误(哪怕是错别字也好)，请来信指出，任何提高译文质量的建议我都将虚心接纳。</p><ul><li>Email(QQ)：70171448在QQ邮箱</li></ul><hr><a href="systemd.index.html">手册索引</a> ·
  <a href="systemd.directives.html">指令索引</a><span style="float:right">systemd-241</span><hr><div class="refentry"><a name="systemd.time"></a><div class="titlepage"></div><div class="refnamediv"><h2>名称</h2><p>systemd.time — 时间与日期规范</p></div><div class="refsect1"><a name="id-1.4"></a><h2 id="描述">描述<a class="headerlink" title="Permalink to this headline" href="systemd.time.html#%E6%8F%8F%E8%BF%B0">¶</a></h2><p>在 systemd 环境中，时间戳(一个时间点)、时间长度(一段时间)、日历事件
    的显示和赋值都有严格的规范和语法。</p></div><div class="refsect1"><a name="id-1.5"></a><h2 id="时长的显示">时长的显示<a class="headerlink" title="Permalink to this headline" href="systemd.time.html#%E6%97%B6%E9%95%BF%E7%9A%84%E6%98%BE%E7%A4%BA">¶</a></h2><p>"时长"是"时间长度"的简称，又被称为"时间间隔"，表示一段时间的长度。
    显示为一个空格分隔的带有时间单位的时长序列。例如：</p><pre class="programlisting">2h 30min</pre><p>将序列中的每一段加起来就是最终的结果(150分钟)。
    注意，时长的显示不受系统本地化设置的影响，永远使用英文时间单位。</p></div><div class="refsect1"><a name="id-1.6"></a><h2 id="时长的赋值">时长的赋值<a class="headerlink" title="Permalink to this headline" href="systemd.time.html#%E6%97%B6%E9%95%BF%E7%9A%84%E8%B5%8B%E5%80%BC">¶</a></h2><p>systemd 在解析时长字符串(用于赋值)的时候，
    接受与时长的显示类似的语法，不同之处在于可以省略空格。
    可以理解的时间单位如下：</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>usec, us, µs</p> (微秒)</li><li class="listitem"><p>msec, ms</p> (毫秒)</li><li class="listitem"><p>seconds, second, sec, s</p> (秒)</li><li class="listitem"><p>minutes, minute, min, m</p> (分钟)</li><li class="listitem"><p>hours, hour, hr, h</p> (小时)</li><li class="listitem"><p>days, day, d</p> (天)</li><li class="listitem"><p>weeks, week, w</p> (星期)</li><li class="listitem"><p>months, month, M</p> (月)[=30.44天]</li><li class="listitem"><p>years, year, y</p> (年)[=365.25天]</li></ul></div><p>如果没有指定时间单位，一般默认为秒，但是偶尔也有例外。
    此外，在某些场合还可以接受纳秒单位("<code class="literal">ns</code>", "<code class="literal">nsec</code>")。
    注意，时长的赋值不受系统本地化设置的影响，必须只能使用英文时间单位，
    不可使用例如"小时/分钟/秒"之类的非英文时间单位。</p><p>下面是一些有效的时长字符串实例：</p><pre class="programlisting">2 h
2hours
48hr
1y 12month
55s500ms
300ms20s 5day</pre><p>出于测试和验证目的，可以使用
    <a href="systemd-analyze.html#"><span class="citerefentry"><span class="refentrytitle">systemd-analyze</span>(1)</span></a>
    的 <span class="command"><strong>timespan</strong></span> 命令规范化给定的时长字符串。</p></div><div class="refsect1"><a name="id-1.7"></a><h2 id="时间戳的显示">时间戳的显示<a class="headerlink" title="Permalink to this headline" href="systemd.time.html#%E6%97%B6%E9%97%B4%E6%88%B3%E7%9A%84%E6%98%BE%E7%A4%BA">¶</a></h2><p>时间戳表示的是一个独一无二的时间点，
    systemd 会按照本地时区格式化之后显示，
    例如：</p><pre class="programlisting">Fri 2012-11-23 23:02:15 CET</pre><p>注意，时间戳的显示不受系统本地化设置的影响，并且表示"星期"的部分永远使用英文三字母缩写。</p><p>有时候，时间戳会以UTC时间(而非本地时间)显示，
    此时，将会明确显示 "<code class="literal">UTC</code>" 时区标记。</p><p>有时候，时间戳会以微秒精度显示，
    此时，表示"秒"的部分将会以带十进制小数的方式显示更精确的亚秒级时间。</p></div><div class="refsect1"><a name="id-1.8"></a><h2 id="时间戳的赋值">时间戳的赋值<a class="headerlink" title="Permalink to this headline" href="systemd.time.html#%E6%97%B6%E9%97%B4%E6%88%B3%E7%9A%84%E8%B5%8B%E5%80%BC">¶</a></h2><p>systemd 在解析时间戳字符串(用于赋值)的时候，接受与时间戳的显示类似的语法。
    不同之处在于：
    (1)尾部的"时区"部分，要么必须省略、要么必须丝毫不差的设为"<code class="literal">UTC</code>"三个大写字母、要么必须设为一个符合IANA格式的时区。
    省略时区表示使用本机时区、设为"UTC"则表示使用世界统一时间，
    使用 <span class="command"><strong>timedatectl list-timezones</strong></span> 命令(参见
    <a href="timedatectl.html#"><span class="citerefentry"><span class="refentrytitle">timedatectl</span>(1)</span></a> 手册)可以按照IANA格式列出所有时区。
    强烈建议使用"UTC"时区以保持最佳的兼容性(主要是为了避免夏令时/冬令时造成的麻烦)。
    (2)头部的"星期"部分可以省略(强烈建议省略)。如果一定要指定这部分，
    那么必须使用英文三字母缩写(例如"Wed")或英文全称(例如"Wednesday")，大小写无所谓，但是不得使用任何非英文表示法。
    (3)"年-月-日"与"时:分:秒"两部分，可以省略二者之一，但是不可全部省略。若省略前者，则表示使用当前日期，若省略后者则表示使用"00:00:00"。
    (4)"时:分:秒"部分，可以只省略":秒"，相当于使用":00"。
    (5)"年-月-日"部分，其中的"年"可以省略为2位数字表示，相当于"20xx"(强烈反对此种用法)。</p><p>如果指定的"星期"与"年-月-日"(即使此部分已被省略)与实际不相符，
    那么该时间戳将被视为无效。</p><p>除了接受上述语法之外，
    还可以使用一些时间戳关键字：
    "<code class="literal">now</code>" 表示当前时间；
    "<code class="literal">today</code>",
    "<code class="literal">yesterday</code>", "<code class="literal">tomorrow</code>"
    分别表示
    今天/昨天/明天的零点(00:00:00)。</p><p>除了接受上述语法之外，
    还可以使用一些相对时间表示法：
    给一个时长(见上文)加上
    "<code class="literal">+</code>" 前缀或者 "<code class="literal"> left</code>" 后缀(注意有空格)，
    表示以当前时间为基准向未来前进指定的时长；
    给一个时长(见上文)加上
    "<code class="literal">-</code>" 前缀
    或者 "<code class="literal"> ago</code>" 后缀(注意有空格)，
    表示以当前时间为基准向过去倒退指定的时长；</p><p>最后，给一个时长(见上文)加上 "<code class="literal">@</code>"
    前缀表示
    相对于UNIX时间原点(1970-01-01 00:00:00 UTC)之后多长时间。</p><p>假定当前时间为北京时间[UTC+8] 2012-11-23 18:15:22 ，
    系统时区 TZ=PRC (中华人民共和国的通用时区)。
    下面是一些时间戳实例及其标准化形式：</p><pre class="programlisting">  Fri 2012-11-23 11:12:13 → Fri 2012-11-23 11:12:13
      2012-11-23 11:12:13 → Fri 2012-11-23 11:12:13
  2012-11-23 11:12:13 UTC → Fri 2012-11-23 19:12:13
               2012-11-23 → Fri 2012-11-23 00:00:00
                 12-11-23 → Fri 2012-11-23 00:00:00
                 11:12:13 → Fri 2012-11-23 11:12:13
                    11:12 → Fri 2012-11-23 11:12:00
                      now → Fri 2012-11-23 18:15:22
                    today → Fri 2012-11-23 00:00:00
                today UTC → Fri 2012-11-23 16:00:00
                yesterday → Fri 2012-11-22 00:00:00
                 tomorrow → Fri 2012-11-24 00:00:00
tomorrow Pacific/Auckland → Thu 2012-11-23 19:00:00
                 +3h30min → Fri 2012-11-23 21:45:22
                      -5s → Fri 2012-11-23 18:15:17
                11min ago → Fri 2012-11-23 18:04:22
              @1395716396 → Tue 2014-03-25 03:59:56</pre><p>注意，不能将其他不同时区的系统所显示的时间戳直接用于赋值。
    因为无法识别UTC与本地时区之外的时间戳，所以其他系统所显示的时间戳可能会被错误的解析(除非那个系统的时区正好是"<code class="literal">UTC</code>")。</p><p>如果想以更高的微秒精度表示时间戳，"秒"部分可以用带十进制小数的方式表示更精确的亚秒级时间。
    例如：</p><pre class="programlisting">2014-03-25 03:59:56.654563</pre><p>有时候，
    systemd 还可能显示相对时间戳(相对于当前时间或命令的调用时间)，
    例如：</p><pre class="programlisting">2 months 5 days ago</pre><p>注意，systemd 显示的相对时间戳可以直接用于赋值(也就是可以被正确解析)。</p></div><div class="refsect1"><a name="id-1.9"></a><h2 id="日历事件">日历事件<a class="headerlink" title="Permalink to this headline" href="systemd.time.html#%E6%97%A5%E5%8E%86%E4%BA%8B%E4%BB%B6">¶</a></h2><p>所谓"日历事件"是指可以同时表达多个时间戳的一种特殊的表达式，
    可以把它想象成一种专用于时间戳的正则表达式。
    其语法是基于前述绝对时间戳语法的一种扩展。例如：</p><pre class="programlisting">Thu,Fri 2012-*-1,5 11:12:13</pre><p>表示：
    2012年任意月份的1号或5号
    且为周三或周五的日子的11点12分13秒</p><p>"星期"部分是可选的。
    若指定，
    则必须使用英文三字母缩写(例如"Wed")或英文全称(例如"Wednesday")，
    大小写无关。可以使用 "<code class="literal">,</code>" 依次列出多个日子，
    也可以使用 "<code class="literal">..</code>" 表示一个范围，
    还可以将多个范围( "<code class="literal">..</code>" )
    用 "<code class="literal">,</code>" 依次列出。</p><p>对于"年-月-日"与"时:分:秒"两部分中的
    每个子部分，
    都可以：
    使用 "<code class="literal">*</code>" 表示匹配任意值、
    使用 "<code class="literal">,</code>" 依次列出多个值、
    使用 "/整数" 后缀表示以此整数为间隔不断向后重复跳跃(例如在表示分钟的部分"3/10"等价于"3,13,23,33,43,53")、
    使用 "<code class="literal">..</code>" 表示一个范围。
    最后，
    还可以用逗号(,)依次列出多个重复(/)与范围(..)。</p><p>在日期部分还可以使用 "<code class="literal">~</code>" 表示一个月中的"倒数第几天"。
    例如 "<code class="literal">*-02~03</code>" 表示"2月的倒数第3天"，
     "<code class="literal">Mon *-05~07/1</code>"
    表示"5月的最后一个星期一"。</p><p>注意，"秒"部分比较特殊，
    可以使用十进制小数以表示更高的精度(最多六位小数)，
    例如"3.33/10.05"等价于"3.33,13.38,23.43,33.48,43.53,53.58"。</p><p>若省略了"年-月-日"
    则等价于当前日期；
    若省略了"时:分:秒"则等价于"00:00:00"；
    若省略了":秒"则等价于":00"</p><p>"时区"部分遵守与时间戳一样的规则，
    要么必须省略、要么必须丝毫不差的设为"<code class="literal">UTC</code>"三个大写字母、要么必须设为一个符合IANA格式的时区。
    省略时区表示使用本机时区，为了保持最佳的兼容性，强烈建议使用"UTC"时区(世界统一时间)。</p><p>下面这些左侧的特殊表达式可以用作右侧的标准化形式的缩写：</p><pre class="programlisting">    minutely → *-*-* *:*:00
      hourly → *-*-* *:00:00
       daily → *-*-* 00:00:00
     monthly → *-*-01 00:00:00
      weekly → Mon *-*-* 00:00:00
      yearly → *-01-01 00:00:00
   quarterly → *-01,04,07,10-01 00:00:00
semiannually → *-01,07-01 00:00:00
   </pre><p>下面是一些日历事件的实例及其
    标准化形式：</p><pre class="programlisting">  Sat,Thu,Mon..Wed,Sat..Sun → Mon..Thu,Sat,Sun *-*-* 00:00:00
      Mon,Sun 12-*-* 2,1:23 → Mon,Sun 2012-*-* 01,02:23:00
                    Wed *-1 → Wed *-*-01 00:00:00
           Wed..Wed,Wed *-1 → Wed *-*-01 00:00:00
                 Wed, 17:48 → Wed *-*-* 17:48:00
Wed..Sat,Tue 12-10-15 1:2:3 → Tue..Sat 2012-10-15 01:02:03
                *-*-7 0:0:0 → *-*-07 00:00:00
                      10-15 → *-10-15 00:00:00
        monday *-12-* 17:00 → Mon *-12-* 17:00:00
  Mon,Fri *-*-3,1,2 *:30:45 → Mon,Fri *-*-01,02,03 *:30:45
       12,14,13,12:20,10,30 → *-*-* 12,13,14:10,20,30:00
            12..14:10,20,30 → *-*-* 12..14:10,20,30:00
  mon,fri *-1/2-1,3 *:30:45 → Mon,Fri *-01/2-01,03 *:30:45
             03-05 08:05:40 → *-03-05 08:05:40
                   08:05:40 → *-*-* 08:05:40
                      05:40 → *-*-* 05:40:00
     Sat,Sun 12-05 08:05:40 → Sat,Sun *-12-05 08:05:40
           Sat,Sun 08:05:40 → Sat,Sun *-*-* 08:05:40
           2003-03-05 05:40 → 2003-03-05 05:40:00
 05:40:23.4200004/3.1700005 → *-*-* 05:40:23.420000/3.170001
             2003-02..04-05 → 2003-02..04-05 00:00:00
       2003-03-05 05:40 UTC → 2003-03-05 05:40:00 UTC
                 2003-03-05 → 2003-03-05 00:00:00
                      03-05 → *-03-05 00:00:00
                     hourly → *-*-* *:00:00
                      daily → *-*-* 00:00:00
                  daily UTC → *-*-* 00:00:00 UTC
                    monthly → *-*-01 00:00:00
                     weekly → Mon *-*-* 00:00:00
    weekly Pacific/Auckland → Mon *-*-* 00:00:00 Pacific/Auckland
                     yearly → *-01-01 00:00:00
                   annually → *-01-01 00:00:00
                      *:2/3 → *-*-* *:02/3:00</pre><p>定时器单元会使用日历事件，详见
      <a href="systemd.timer.html#"><span class="citerefentry"><span class="refentrytitle">systemd.timer</span>(5)</span></a>
      手册。</p><p>出于测试和验证目的，可以使用
      <a href="systemd-analyze.html#"><span class="citerefentry"><span class="refentrytitle">systemd-analyze</span>(1)</span></a>
      的 <span class="command"><strong>calendar</strong></span> 命令规范化给定的日历事件。
      此工具还会计算出给定日历事件的下一个过期时间。</p></div><div class="refsect1"><a name="id-1.10"></a><h2 id="参见">参见<a class="headerlink" title="Permalink to this headline" href="systemd.time.html#%E5%8F%82%E8%A7%81">¶</a></h2><p>
        <a href="systemd.html#"><span class="citerefentry"><span class="refentrytitle">systemd</span>(1)</span></a>,
        <a href="journalctl.html#"><span class="citerefentry"><span class="refentrytitle">journalctl</span>(1)</span></a>,
        <a href="systemd.timer.html#"><span class="citerefentry"><span class="refentrytitle">systemd.timer</span>(5)</span></a>,
        <a href="systemd.unit.html#"><span class="citerefentry"><span class="refentrytitle">systemd.unit</span>(5)</span></a>,
        <a href="systemd.directives.html#"><span class="citerefentry"><span class="refentrytitle">systemd.directives</span>(7)</span></a>,
        <a href="systemd-analyze.html#"><span class="citerefentry"><span class="refentrytitle">systemd-analyze</span>(1)</span></a>
      </p></div></div></body></html>
